Embedded systems (i.e., mobile electronic devices having embedded software/firmware), such as mobile cellular phones, personal digital assistants (PDA's), MP3 players, digital cameras, etc. often contain firmware and/or application software that is either provided by the manufacturers of the electronic devices, telecommunication carriers, or third parties. Mobile electronic devices may be embedded systems because the firmware and application software that they contain may be embedded in silicon memory, such as FLASH. However, firmware and/or application software often contain software bugs. New versions of the firmware and software are periodically released to fix the bugs, introduce new features, or both.
A fundamental problem in providing access to new releases of firmware and software is that the embedded systems (mobile electronic devices) are often constrained in terms of resources, such as available memory. Attempts to upgrade firmware or software by end-users often results in making the device, or some features of the device inoperable. Additionally, when changes to a firmware component, such as a driver, need to be made, there is no easy way to swap the old one out and put in a new one. Typically, the device has to be reflashed by a new FLASH image that is created by recompiling all or most of the code and/or rebuilding the image file. It can be seen that there is a need for an architecture where such recompilation or rebuilding is either made unnecessary or minimized and simplified.
When a new version of a driver or a function is to be introduced into embedded systems, all references to the old driver or function that occur in all other software/firmware sections have to be changed. Similarly, when a data item is shifted around in the memory of an embedded device, all references to that particular data item need to be updated. These are at least two issues that must be faced by embedded system designers.
In current embedded system technology, for example in mobile electronic devices, firmware is one big mass making it very hard to manipulate or update individual functions or sections independently. It can be seen that there is a need for a next generation architecture that enables updates of independent components within mobile electronic devices having embedded systems.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with some aspects of the present invention as set forth in the remainder of the present application with reference to the drawings appended hereto.